/*
 * 测试一元运算符
 * 1、正号 +
 * 2、负号 -
 * 3、递增 ++
 * 4、递减 --
 */

 let s = '100' ;

 let x = +200 ;

 let r = s + x ; // 连接字符串而不是对数字执行加法运算
 console.log( r , typeof r );

 let y = +s ; // 可以使用一元的 + 操作符将一个string类型的数字值转换为number类型
 r = y + x ;
 console.log( r , typeof r );

 let result = -10 + 20 ; // 负号可以直接作用在数值之前表示负数
 console.log( result );

 let opposite = -result ; // 使用负号得到相反数
 console.log( opposite );

 console.log( '- - - - - - - - - - - - - - - - - - - - - - - -' );

 // 递增 ++

 let first = 100 ;
 // 若表达式中 ++ 是放在变量之后的，则表示先使用变量原来的值，然后再执行递增操作
 // 对于 second = first++ 来说，是首先将first变量原来的值赋值给second，然后再对first执行递增操作
 let second = first++ ;
 console.log( 'second : ' , second ); // 100
 console.log( 'first : ' , first ); // 101

 let third = 100 ;
 // 若表达式中 ++ 是放在变量之前的，则表示先执行递增操作，然后再执行其它操作
 // 对于 fourth = ++third 来说，先对third执行递增操作，然后再将third的值赋值给fourth
 let fourth = ++third ;
 console.log( 'fourth : ' , fourth ); // 101
 console.log( 'third : ' , third ); // 101

 console.log( '- - - - - - - - - - - - - - - - - - - - - - - -' );

 // 递减 --

 let fifth = 100 ;
 let sixth = fifth-- ;
 console.log( 'sixth : ' , sixth ); // 100
 console.log( 'fifth : ' , fifth ); // 99

 let seventh = 100 ;
 let eighth = --seventh ;
 console.log( 'eighth' , eighth ); // 99
 console.log( 'seventh : ' , seventh ); // 99


 let a = 100 , b = 200 ;
 // 对于第一项 a++ 来说，先获得原来的值 【100】 ，然后再 ++得到 101
 // 对于第二项 --a 来说，先确定原来的值是 101 ，所以先执行--操作得到 【100】
 // 对于第三项 --b 来说，首先在原来值200基础上执行--操作得到 【199】
 // 对于第三项 b-- 来说，先确定原来的值是 【199】，然后再执行--操作得到 198 
 let c = a++ + --a + --b + b-- ; // 100 + 100 + 199 + 199
 console.log( c ); // 598

 console.log( 'a = ' , a , ' , b = ' , b ); // 100 , 198